package com.ruoyi.mes.mapper;

import java.time.LocalDate;
import java.util.Date;
import java.util.List;
import java.util.Map;

import com.ruoyi.mes.domain.ProOrder;
import org.apache.ibatis.annotations.Param;

/**
 * 产品订单Mapper接口
 *
 * @author LongAndHao
 * @date 2023-04-04
 */
public interface ProOrderMapper
{
    /**
     * 查询产品订单
     *
     * @param id 产品订单主键
     * @return 产品订单
     */
    public ProOrder selectProOrderById(Long id);

    /**
     * 查询产品订单列表
     *
     * @param proOrder 产品订单
     * @return 产品订单集合
     */
    public List<ProOrder> selectProOrderList(ProOrder proOrder);

    /**
     * 新增产品订单
     *
     * @param proOrder 产品订单
     * @return 结果
     */
    public int insertProOrder(ProOrder proOrder);

    /**
     * 修改产品订单
     *
     * @param proOrder 产品订单
     * @return 结果
     */
    public int updateProOrder(ProOrder proOrder);

    /**
     * 删除产品订单
     *
     * @param id 产品订单主键
     * @return 结果
     */
    public int deleteProOrderById(Long id);

    /**
     * 批量删除产品订单
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteProOrderByIds(Long[] ids);

    /**
     * 查 - 产品订单分页 - 不重复订单编码
     * @param proOrder
     * @return
     */
    List<ProOrder> selectDistinctOrders(ProOrder proOrder);

    /**
     * 查 - 产品订单 - 产品订单编号及产品id
     * @param orderNumber
     * @param proId
     * @return
     */
    ProOrder selectProOrdersByCodeAndProId(@Param(value = "orderNumber") String orderNumber,@Param(value = "proId") Long proId);

    /**
     * 查 - 产品订单 - 订单编码相同
     * @param orderNumber
     * @return
     */
    List<ProOrder> selectProOrdersByCode(String orderNumber);

    /**
     * 上一周订单数
     * @return
     */
    List<Map<String,Long>> lastWeekProOrders(@Param("startTime") Date startTime,@Param("endTime") Date endTime);
}
